using System.Windows.Controls;
using ibba.src.noriskbo.ViewModels;
using ibba.src.sl.componentes;
using ibba.src.sl.recursos.MVVM;

namespace ibba.src.noriskbo.views.childs
{
    public partial class ChildGarantia : ChildWindow
    {
        //public delegate void EventCloseWindow (ServiceGarantia.GarantiaManual pGarantia, enumRetornoAcaoPage pAcao);
        //public event EventCloseWindow OnCloseWindow;

        private ChildGarantiaViewModel _viewModel;
        private code.BarraBotoes.IVisibilidadeBotoes _visibilidadeBotao;

        private ChildGarantia()
        {
            InitializeComponent();

            _viewModel = (ChildGarantiaViewModel)LayoutRoot.DataContext;
            _viewModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(_viewModel_PropertyChanged);

            _viewModel.OnFimInclusao += new FimInclusao(_viewModel_OnFimInclusao);

            CarregarBarraBotoes();
        }

        void _viewModel_OnFimInclusao()
        {
            if (_viewModel.StateView == StateViewType.None)
            {
                this.Close();
            }
        }

        void _viewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            //throw new System.NotImplementedException();
        }

        public ChildGarantia(int pIdGrupo, string pNomeGrupo)
            : this()
        {            
            //_viewModel.Entidade.IdGrupo = pIdGrupo;
            //_viewModel.Entidade.NomeGrupo = pNomeGrupo;             
        }

        internal void Show()
        {
            _viewModel.StateView = StateViewType.Inserting;
            base.Show();
        }

        internal void Show(string pContrato, int pIdCliente, int pIdProdutoRisco)
        {
            //_viewModel.NovaGarantia(pContrato, pIdCliente, pIdProdutoRisco);
            base.Show();
        }

        /// <summary>
        /// Carrega os botões necessários na barra de menu
        /// </summary>
        private void CarregarBarraBotoes()
        {
            code.BarraBotoes.BuildBarraBotoesLancamentoManual.MontarBarra(barraMenu,
                            new ControlMenuBar.Botao.DelegateClick(btnSalvar_Click),
                            new ControlMenuBar.Botao.DelegateClick(btnEditar_Click),
                            new ControlMenuBar.Botao.DelegateClick(btnExcluir_Click),
                            new ControlMenuBar.Botao.DelegateClick(btnCopiar_Click),
                            new ControlMenuBar.Botao.DelegateClick(btnSolicitar_Click),
                            new ControlMenuBar.Botao.DelegateClick(btnAprovar_Click),
                            new ControlMenuBar.Botao.DelegateClick(btnRejeitar_Click),
                            null,
                            new ControlMenuBar.Botao.DelegateClick(btnVoltar_Click));

            _visibilidadeBotao = code.BarraBotoes.VisibilidadeBotoesFactory.Preparar(barraMenu);
            _visibilidadeBotao.OcultarTodosBotoes();
        }

        #region Eventos_BarraBotoes

        private void btnSalvar_Click()
        {
            _viewModel.ComandoSalvar();
        }

        private void btnEditar_Click()
        {
            //_viewModel.ComandoEditar();
        }

        private void btnExcluir_Click()
        {
            _viewModel.ComandoExcluir();
        }

        private void btnCopiar_Click()
        {
            _viewModel.ComandoCopiar();
        }

        private void btnSolicitar_Click()
        {
            _viewModel.ComandoSolicitar();
        }

        private void btnAprovar_Click()
        {
            _viewModel.ComandoAprovar();
        }

        private void btnRejeitar_Click()
        {
            _viewModel.ComandoRejeitarSolicitacao();
        }

        private void btnVoltar_Click()
        {
            _viewModel.Cancelar();
            if (_viewModel.StateView == StateViewType.None)
            {
                this.Close();
            }
        }

        #endregion

    }
}